package model

type DoorType uint8

const (
	NormalDoor DoorType = 0 //正常单开门
	ADoor      DoorType = 1 //A门
	BDoor      DoorType = 2 //B门
)

type EStatus int

const (
	EOpened EStatus = 1 //已开启
	EClosed EStatus = 2 //已关闭
	EFault  EStatus = 7 //故障

)

//小车类型
type Elevator struct {
	DeviceCode   string         `json:"device_code" bson:"device_code" binding:"required"`        //电梯设备编号（全场唯一）
	ElevatorType int            `json:"elevator_type" bson:"elevator_type"  binding:"oneof= 0 1"` //0=正常单开门，1 =AB门
	BanAgvList   []string       `json:"ban_agv_list" bson:"ban_agv_list" binding:"required"`      //待命点禁止的AGV列表，为空时允许全部AGV
	AgvId        string         `json:"agv_id" bson:"agv_id"`                                     //占用的AGV编号
	IsEnable     bool           `json:"is_enable" bson:"is_enable"`                               //是否启用 true:启用 false:禁用
	Online       bool           `json:"online" bson:"online"`                                     //是否在线 true:在线 false:离线
	InfoList     []ElevatorInfo `json:"info_list" bson:"info_list" binding:"required"`            //地图数据列表

}

type ElevatorInfo struct {
	MapName   string   `json:"map_name" bson:"map_name" binding:"required"`     //地图名
	StationId string   `json:"station_id" bson:"station_id" binding:"required"` //电梯点位
	FrontId   string   `json:"front_id" bson:"front_id" binding:"required"`     //门前点位
	Door      DoorType `json:"door" bson:"door"  binding:"oneof= 0 1 2"`        //0=正常单开门，1 =A门， 2 =B门
}
type ElevatorStatus struct {
	DeviceCode         string        `json:"device_code"`
	Online             bool          `json:"online"`
	LevelStatusList    []LevelStatus `json:"level_status_list"`
	Level              int           `json:"level"`
	Status             EStatus       `json:"status"`
	StatusString       string        `json:"status_string"`
	OpenDoorMode       int           `json:"open_door_mode"`
	OpenDoorModeString string        `json:"open_door_mode_string"`
	Error              string        `json:"error"`
	ErrorInfo          string        `json:"error_info"`
	AgvId              string        `json:"agv_id"`
	IsEnable           bool          `json:"is_enable"`
}

type LevelStatus struct {
	MapName       string `json:"map_name"` //地图名称
	CurrentSiteId string `json:"current_site_id"`
	CurrentLevel  int    `json:"current_level"` //当前层
	// CurrentOpenDoorMode int    `json:"current_open_door_mode"` //开门方式 0:单开门 1:A门 2:B门
	CurrentStatus EStatus `json:"current_status"` //当前层的状态
}

func (Elevator) TableName() string {
	return "t_data_elevator"
}
